<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <!-- 一、什么是模块化？ -->
    <!-- 模块化开发最终目的就是将程序划分成一个个小的结构
        这个结构中有属于自己的代码逻辑，有自己的作用域，定义变量名等，不会影响到其他结构
        这个结构可以将自己希望暴露的变量、函数、对象等导出给其他结构使用

        上面提到的结构，就是模块；按照这种结构划分开发程序的过程，就是模块化开发
     -->

     <!-- 二、没有模块化开发会面临的问题 -->
     <!-- 1.变量名冲突 -->
     <!-- <script src="./a.js"></script>
     <script src="./b.js"></script>

     <script>
        console.log(moduleA.a);
     </script> -->

     <!-- 如何解决变量名冲突的问题：使用立即执行函数 -->

     <!-- 2.代码量庞大，逻辑复杂 -->

     <!-- 三、js直到es6之后才推出了自己的模块化方案，
              在js有自己的模块化方案之前，也有其他的模块化方案：AMD\CMD\commonJS

              主要讲的模块化方案：commonJS 和 es6的模块化方案
    -->

    <!-- 四、commonJS和node的关系 -->
    <!-- 1.commonJS是一个规范，最开始提出来是用于浏览器以外的地方，并且最开始是叫serveJS
         后来为了体现它的广泛性，修改为commonJS,简称CJS
         =>node是commonJS在服务器端一个具有代表性的实现（node包含commonJS）
         =>webpack打包工具具备对commonJS的支持和实现
         2.node中对commonJS进行了支持和实现，让我们在开发中可以直接使用commonJS进行模块化开发，
         在node中每一个js文件都是单独的模块
         =>这个模块里面包含commonJS的核心变量：exports、module.exports、require
         =>使用这些变量，就可以很方便的进行模块化开发
         3.模块化的核心功能是对数据的导出和导入，node中对其进行了实现：
         =>exports、module.exports负责对模块的内容进行导出
         =>require负责在一个模块中导入其他模块的内容

    -->



</body>
</html>